The usual form of digital data communication involves sending such digital data over a packet-based network. A packet is a group of bits representing a portion of the digital data and each packet is treated individually by the network. As digital data messages can be quite long, usually packets are grouped together by the sender and interpreted as a group by the receiver. In this way, the packet based network can still treat the packets individually, as it is used to doing, but the sender and receiver treat them as a group.
Protocols have been developed for such packet-based communications, such protocols being sets of rules by which the sender and receiver agree to abide by so that the packet data can be reliably understood once received at the receiver. One such protocol is known as UDP/IP (User Datagram Protocol/Internet Protocol). In this protocol, each time a sender sends a data packet the receiver sends an acknowledgement confirming to the sender that the receiver has received the data packet. Once the sender receives this acknowledgement, it can safely assume that the receiver has received the packet and the sender can thus delete this packet from its system. If the sender does not receive this acknowledgement, it assumes that the receiver has not received the packet and thus the sender sends the packet again to the receiver.
These protocols have been advantageously applied in the context of a client/server computing network, where a client computer system requests a server computer system to perform part of the client computer system's work. The client sends a request to the server asking the server to do some work. The server does the work and then sends a reply to the client. The client then uses this reply in its own local work.
In such client/server systems, there are many acknowledgements flowing back and forth between client and server as sometimes the client is the sender (when it sends a request for work) and sometimes the server is the sender (when it sends a reply back to the client). Acknowledgements are often sent after each data packet is received by the current receiver. Each of these received acknowledgements must be processed by the sender, which can present a drain on the processing resources of the sender computing system. Further, when certain communications networks are used, such as mobile networks, transmission time can be very expensive, so it is highly advantageous to flow as few packets as possible over the network. Thus, the many acknowledgements required in such systems has proven to be very expensive.